Projet : Moteur de classiffication

Thème : Marketplace

https://openclassrooms.com/fr/paths/164/projects/631/assignment

Objectif du notebook

L'objet de ce projet est de proposer une étude de faisabilité d'un moteur de classification d'articles basé sur une image et une

Bonjour,

Merci pour ton aide sur ce projet !

Ta mission est de réaliser une première étude de faisabilité d'un moteur de classification d'articles, basé sur une image et une description, pour l'automatisation de l'attribution de la catégorie de l'article.

Tu dois analyser le jeu de données en réalisant un prétraitement des descriptions des produits et des images, une réduction de dimension, puis un clustering. Les résultats de la réduction de dimension et du clustering seront à présenter sous la forme de graphiques en deux dimensions, et confirmés par un calcul de similarité entre les catégories réelles et les clusters. Ces résultats illustreront le fait que les caractéristiques extraites permettent de regrouper des produits de même catégorie.

Pourrais-tu nous démontrer, par cette approche de modélisation, la faisabilité de regrouper automatiquement des produits de même catégorie ?

Voici les contraintes :

Afin d’extraire les features texte, il sera nécessaire de mettre en œuvre :

  • deux approches de type “bag-of-words”, comptage simple de mots et Tf-idf ;
  • une approche de type word/sentence embedding classique avec Word2Vec (ou Glove ou FastText) ;
  • une approche de type word/sentence embedding avec BERT ;
  • une approche de type word/sentence embedding avec USE (Universal Sentence Encoder).

En pièce jointe, tu trouveras un exemple de mise en œuvre de ces approches sur un autre dataset. Je t’invite à l’utiliser comme point de départ, cela va te faire gagner beaucoup de temps !

Afin d’extraire les features image, il sera nécessaire de mettre en œuvre :

  • un algorithme de type SIFT / ORB / SURF ;
  • un algorithme de type CNN Transfer Learning.

Merci encore,

Linda

P.S. : j’insiste sur le fait qu’on n’a pas besoin d’un moteur de classification supervisée à ce stade, mais bien d’une étude de faisabilité !

In [1]:
#Data management/data viz
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
import plotly.graph_objects as go


#Statistiques/ML
import sklearn
from sklearn.metrics import silhouette_samples, silhouette_score
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score # score recall
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.linear_model import Lasso
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from sklearn.metrics import mean_absolute_error
from sklearn.model_selection import GridSearchCV
from sklearn import model_selection
from sklearn.ensemble import RandomForestRegressor
from sklearn.decomposition import PCA
from sklearn.mixture import GaussianMixture
from sklearn import cluster, metrics

from sklearn.metrics import (
    adjusted_rand_score as ari
)
from scipy.cluster.hierarchy import fcluster, linkage
import scipy

#Image
from PIL import Image
from IPython.display import  display
from PIL import ImageFilter
import cv2 
from matplotlib.image import imread

#Texte
import nltk
from nltk.tokenize import sent_tokenize, word_tokenize
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer

from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
from sklearn.manifold import TSNE
from sklearn.manifold._t_sne import TSNE

import tensorflow as tf
import tensorflow.keras
from tensorflow.keras import backend as K

from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras import metrics as kmetrics
from tensorflow.keras.layers import *
from tensorflow.keras.models import Model
import gensim

#Autre
import time
import os
#Afficher toute les colonnes
pd.set_option('display.max_columns', None)
#pd.set_option('display.max_rows', None)

import time, cv2

Data Management

Chargeons le jeu de données;

In [2]:
try :
    df=pd.read_csv("E_commerce.csv")
    os.chdir(os.getcwd()+"/Images")
except :
    df.head()
In [3]:
print(df.shape)
(1050, 15)

On a 1050 biens de consommations regrouppés en 15 caractéristiques.

In [4]:
df.product_category_tree.value_counts()
Out[4]:
["Home Furnishing >> Bed Linen >> Blankets, Quilts & Dohars"]                                                                                               56
["Kitchen & Dining >> Coffee Mugs >> Prithish Coffee Mugs"]                                                                                                 26
["Watches >> Wrist Watches >> Maxima Wrist Watches"]                                                                                                        23
["Kitchen & Dining >> Coffee Mugs >> Rockmantra Coffee Mugs"]                                                                                               22
["Home Furnishing >> Bath Linen >> Towels"]                                                                                                                 19
                                                                                                                                                            ..
["Beauty and Personal Care >> Body and Skin Care >> Face Care >> Sunscreen >> Keya Seth Sunscreen"]                                                          1
["Baby Care >> Infant Wear >> Baby Boys' Clothes >> Shirts >> FS Mini Klub Shirts >> FS Mini Klub Baby Boy's Woven Casual Shirt"]                            1
["Home Decor & Festive Needs >> Religion & Devotion >> Jaycoknit Religion & Devotion >> Jaycoknit Mediterranean Sea's Lucky Wooden Handc..."]                1
["Kitchen & Dining >> Tableware & Cutlery >> Jugs & Pitchers >> Jugs >> Prisha India Craft Jugs >> Prisha India Craft m_jug015-1-prishaindia Water ..."]     1
["Home Furnishing >> Living Room Furnishing >> Diwan Sets >> SANTOSH ROYAL FASHION Diwan Sets >> SANTOSH ROYAL FASHION Cotton Embroidered Diwan Set"]        1
Name: product_category_tree, Length: 642, dtype: int64

Les catégories sont trop diversifiées et notre jeu de données est petit. Nous allons allégé les catégories.

In [5]:
categorie =df.product_category_tree[0].split(" >>")[0]
categorie =categorie.replace("[", "")
categorie =categorie.replace("''", "")
categorie=categorie.replace("\"", "")
categorie
Out[5]:
'Home Furnishing'
In [6]:
def target(categorie):
    """Creation catégorie des articles"""
    categorie =categorie.split(" >>")[0]
    categorie =categorie.replace("[", "")
    categorie =categorie.replace("''", "")
    categorie=categorie.replace("\"", "")
    return(categorie)
    
target(df.product_category_tree[0])    
target(df.product_category_tree[30])    
Out[6]:
'Watches'
In [7]:
df["categorie_article"]=0

df["categorie_article"]=df["product_category_tree"].apply(lambda x: target(x))
df["categorie_article"].value_counts()
Out[7]:
Beauty and Personal Care      150
Computers                     150
Home Furnishing               150
Home Decor & Festive Needs    150
Watches                       150
Kitchen & Dining              150
Baby Care                     150
Name: categorie_article, dtype: int64

On a 7 catégories d'articles avec 150 échantillons chacun.

Les données images sont récupérables à partir de la colonne image.

In [8]:
df["image"][1]
Out[8]:
'7b72c92c2f6c40268628ec5f14c6d590.jpg'

Les données textes sont dans la colonne description. Ils correspondent à la description du produit.

In [9]:
df["product_url"][1]
Out[9]:
'http://www.flipkart.com/sathiyas-cotton-bath-towel/p/itmegfzhxbyucwgn?pid=BTWEGFZHGBXPHZUH'
In [10]:
df["description"][1]
Out[10]:
'Specifications of Sathiyas Cotton Bath Towel (3 Bath Towel, Red, Yellow, Blue) Bath Towel Features Machine Washable Yes Material Cotton Design Self Design General Brand Sathiyas Type Bath Towel GSM 500 Model Name Sathiyas cotton bath towel Ideal For Men, Women, Boys, Girls Model ID asvtwl322 Color Red, Yellow, Blue Size Mediam Dimensions Length 30 inch Width 60 inch In the Box Number of Contents in Sales Package 3 Sales Package 3 Bath Towel'

Partie Image

Dans cette partie, nous étudierons la faisabilité d'un moteur de classiffication en utilisant uniquement les images des articles de notre échantillon.

Pré-processing

Manipulation des images et créations d'un dataset.

In [11]:
df_image=df[["categorie_article","image"]]
df_image["image_propre"]=df.index
df_image["image_propre"]=df_image["image_propre"].apply(lambda x: str(x)+".jpg")
df_image.head()
<ipython-input-11-aed7f68bde15>:2: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  df_image["image_propre"]=df.index
<ipython-input-11-aed7f68bde15>:3: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  df_image["image_propre"]=df_image["image_propre"].apply(lambda x: str(x)+".jpg")
Out[11]:
categorie_article image image_propre
0 Home Furnishing 55b85ea15a1536d46b7190ad6fff8ce7.jpg 0.jpg
1 Baby Care 7b72c92c2f6c40268628ec5f14c6d590.jpg 1.jpg
2 Baby Care 64d5d4a258243731dc7bbb1eef49ad74.jpg 2.jpg
3 Home Furnishing d4684dcdc759dd9cdf41504698d737d8.jpg 3.jpg
4 Home Furnishing 6325b6870c54cd47be6ebfbffa620ec7.jpg 4.jpg
In [12]:
exemple_Watch=[index for index, value in enumerate(list(df_image["categorie_article"]=="Watches")) if value == 1][:3]
exemple_Baby=[index for index, value in enumerate(list(df_image["categorie_article"]=="Baby Care")) if value == 1][:3]
exemple_Computer=[index for index, value in enumerate(list(df_image["categorie_article"]=="Computers")) if value == 1][:3]
In [13]:
print("Baby Care")
for i in range(3):
    plt.subplot(130 + 1 + i)
    plt.imshow(imread(df_image.loc[exemple_Baby[i],"image"]))
plt.show()
print("Computer")
for i in range(3):
    plt.subplot(130 + 1 + i)
    plt.imshow(imread(df_image.loc[exemple_Computer[i],"image"]))
plt.show()
print("Watches")
for i in range(3):
    plt.subplot(130 + 1 + i)
    plt.imshow(imread(df_image.loc[exemple_Watch[i],"image"]))
plt.show()
Baby Care
Computer
Watches
In [14]:
for i in range(len(df_image.image)):
    image = cv2.imread(df_image.image[i])
    image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    image = cv2.equalizeHist(image)
    nom=str(i)
    cv2.imwrite(str(nom)+".jpg", image) 
In [15]:
print("Baby Care")
for i in range(3):
    plt.subplot(130 + 1 + i)
    plt.imshow(imread(df_image.loc[exemple_Baby[i],"image_propre"]),cmap='gray')
plt.show()
print("Computer")
for i in range(3):
    plt.subplot(130 + 1 + i)
    plt.imshow(imread(df_image.loc[exemple_Computer[i],"image_propre"]),cmap='gray')
plt.show()
print("Watches")
for i in range(3):
    plt.subplot(130 + 1 + i)
    plt.imshow(imread(df_image.loc[exemple_Watch[i],"image_propre"]),cmap='gray')
plt.show()
Baby Care
Computer
Watches
In [16]:
#exemple d'image
img = Image.open("2.jpg") 
display(img)
mat = np.array(img)
print("Taille de la matrice de pixels : {}".format(mat.shape))
Taille de la matrice de pixels : (729, 982)

Approche SIFT

L'algorithme SIFT (Scale-invariant feature transform). Cette méthode, développée en 1999 et très populaire dans le domaine de la vision par ordinateur, permet d'extraire des features (ou points d'intérêt) de l'image et de calculer leurs descripteurs. #

L'approche ORB est gratuite pour la production par rapport à SIFT et SURF

Création des descripteurs et des clusteurs
In [17]:
#SIFT_create prend en argument le nombre de features que l'on souhaite avoir
test=imread("1.jpg")
sift = cv2.xfeatures2d.SIFT_create(500) # Ce choix est-il arbitraire ?
kp=sift.detect(test,None)
print("On a",len(kp),"features.")
gray=cv2.drawKeypoints(test,kp,None)
plt.figure(figsize = (50,20))
plt.imshow(gray)
On a 500 features.
Out[17]:
<matplotlib.image.AxesImage at 0x7f8a60af3fd0>
In [18]:
df_image=df_image[["categorie_article","image_propre"]]
df_image
Out[18]:
categorie_article image_propre
0 Home Furnishing 0.jpg
1 Baby Care 1.jpg
2 Baby Care 2.jpg
3 Home Furnishing 3.jpg
4 Home Furnishing 4.jpg
... ... ...
1045 Baby Care 1045.jpg
1046 Baby Care 1046.jpg
1047 Baby Care 1047.jpg
1048 Baby Care 1048.jpg
1049 Baby Care 1049.jpg

1050 rows × 2 columns

In [19]:
df_image.groupby("categorie_article").count()
Out[19]:
image_propre
categorie_article
Baby Care 150
Beauty and Personal Care 150
Computers 150
Home Decor & Festive Needs 150
Home Furnishing 150
Kitchen & Dining 150
Watches 150
In [20]:
path=os.getcwd()
print(path)
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images
In [21]:
for image_num in range(len(df_image.values)) :
    a=path+str(df_image.loc[image_num,"image_propre"])
    print(a)
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images0.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images2.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images3.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images4.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images5.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images6.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images7.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images8.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images9.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images10.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images11.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images12.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images13.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images14.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images15.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images16.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images17.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images18.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images19.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images20.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images21.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images22.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images23.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images24.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images25.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images26.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images27.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images28.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images29.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images30.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images31.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images32.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images33.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images34.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images35.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images36.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images37.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images38.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images39.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images40.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images41.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images42.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images43.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images44.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images45.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images46.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images47.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images48.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images49.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images50.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images51.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images52.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images53.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images54.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images55.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images56.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images57.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images58.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images59.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images60.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images61.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images62.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images63.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images64.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images65.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images66.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images67.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images68.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images69.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images70.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images71.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images72.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images73.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images74.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images75.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images76.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images77.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images78.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images79.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images80.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images81.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images82.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images83.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images84.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images85.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images86.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images87.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images88.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images89.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images90.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images91.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images92.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images93.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images94.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images95.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images96.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images97.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images98.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images99.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images100.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images101.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images102.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images103.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images104.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images105.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images106.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images107.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images108.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images109.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images110.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images111.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images112.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images113.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images114.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images115.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images116.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images117.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images118.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images119.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images120.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images121.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images122.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images123.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images124.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images125.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images126.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images127.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images128.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images129.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images130.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images131.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images132.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images133.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images134.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images135.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images136.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images137.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images138.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images139.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images140.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images141.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images142.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images143.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images144.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images145.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images146.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images147.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images148.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images149.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images150.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images151.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images152.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images153.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images154.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images155.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images156.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images157.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images158.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images159.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images160.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images161.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images162.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images163.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images164.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images165.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images166.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images167.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images168.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images169.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images170.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images171.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images172.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images173.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images174.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images175.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images176.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images177.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images178.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images179.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images180.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images181.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images182.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images183.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images184.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images185.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images186.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images187.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images188.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images189.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images190.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images191.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images192.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images193.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images194.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images195.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images196.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images197.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images198.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images199.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images200.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images201.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images202.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images203.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images204.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images205.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images206.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images207.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images208.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images209.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images210.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images211.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images212.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images213.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images214.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images215.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images216.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images217.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images218.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images219.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images220.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images221.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images222.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images223.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images224.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images225.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images226.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images227.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images228.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images229.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images230.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images231.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images232.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images233.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images234.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images235.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images236.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images237.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images238.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images239.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images240.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images241.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images242.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images243.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images244.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images245.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images246.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images247.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images248.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images249.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images250.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images251.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images252.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images253.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images254.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images255.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images256.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images257.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images258.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images259.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images260.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images261.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images262.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images263.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images264.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images265.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images266.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images267.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images268.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images269.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images270.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images271.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images272.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images273.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images274.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images275.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images276.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images277.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images278.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images279.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images280.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images281.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images282.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images283.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images284.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images285.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images286.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images287.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images288.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images289.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images290.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images291.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images292.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images293.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images294.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images295.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images296.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images297.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images298.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images299.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images300.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images301.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images302.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images303.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images304.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images305.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images306.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images307.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images308.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images309.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images310.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images311.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images312.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images313.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images314.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images315.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images316.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images317.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images318.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images319.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images320.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images321.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images322.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images323.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images324.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images325.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images326.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images327.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images328.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images329.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images330.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images331.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images332.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images333.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images334.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images335.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images336.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images337.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images338.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images339.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images340.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images341.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images342.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images343.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images344.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images345.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images346.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images347.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images348.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images349.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images350.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images351.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images352.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images353.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images354.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images355.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images356.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images357.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images358.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images359.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images360.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images361.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images362.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images363.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images364.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images365.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images366.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images367.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images368.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images369.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images370.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images371.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images372.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images373.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images374.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images375.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images376.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images377.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images378.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images379.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images380.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images381.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images382.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images383.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images384.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images385.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images386.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images387.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images388.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images389.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images390.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images391.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images392.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images393.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images394.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images395.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images396.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images397.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images398.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images399.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images400.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images401.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images402.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images403.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images404.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images405.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images406.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images407.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images408.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images409.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images410.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images411.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images412.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images413.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images414.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images415.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images416.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images417.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images418.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images419.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images420.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images421.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images422.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images423.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images424.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images425.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images426.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images427.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images428.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images429.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images430.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images431.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images432.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images433.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images434.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images435.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images436.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images437.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images438.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images439.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images440.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images441.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images442.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images443.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images444.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images445.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images446.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images447.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images448.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images449.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images450.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images451.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images452.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images453.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images454.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images455.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images456.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images457.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images458.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images459.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images460.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images461.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images462.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images463.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images464.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images465.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images466.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images467.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images468.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images469.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images470.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images471.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images472.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images473.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images474.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images475.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images476.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images477.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images478.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images479.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images480.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images481.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images482.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images483.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images484.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images485.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images486.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images487.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images488.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images489.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images490.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images491.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images492.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images493.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images494.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images495.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images496.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images497.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images498.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images499.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images500.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images501.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images502.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images503.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images504.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images505.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images506.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images507.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images508.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images509.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images510.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images511.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images512.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images513.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images514.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images515.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images516.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images517.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images518.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images519.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images520.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images521.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images522.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images523.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images524.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images525.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images526.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images527.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images528.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images529.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images530.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images531.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images532.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images533.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images534.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images535.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images536.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images537.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images538.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images539.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images540.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images541.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images542.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images543.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images544.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images545.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images546.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images547.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images548.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images549.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images550.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images551.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images552.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images553.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images554.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images555.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images556.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images557.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images558.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images559.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images560.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images561.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images562.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images563.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images564.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images565.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images566.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images567.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images568.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images569.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images570.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images571.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images572.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images573.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images574.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images575.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images576.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images577.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images578.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images579.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images580.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images581.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images582.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images583.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images584.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images585.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images586.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images587.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images588.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images589.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images590.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images591.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images592.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images593.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images594.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images595.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images596.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images597.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images598.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images599.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images600.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images601.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images602.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images603.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images604.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images605.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images606.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images607.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images608.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images609.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images610.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images611.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images612.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images613.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images614.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images615.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images616.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images617.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images618.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images619.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images620.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images621.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images622.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images623.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images624.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images625.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images626.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images627.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images628.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images629.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images630.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images631.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images632.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images633.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images634.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images635.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images636.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images637.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images638.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images639.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images640.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images641.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images642.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images643.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images644.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images645.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images646.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images647.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images648.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images649.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images650.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images651.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images652.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images653.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images654.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images655.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images656.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images657.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images658.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images659.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images660.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images661.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images662.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images663.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images664.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images665.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images666.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images667.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images668.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images669.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images670.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images671.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images672.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images673.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images674.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images675.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images676.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images677.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images678.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images679.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images680.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images681.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images682.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images683.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images684.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images685.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images686.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images687.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images688.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images689.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images690.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images691.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images692.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images693.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images694.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images695.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images696.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images697.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images698.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images699.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images700.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images701.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images702.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images703.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images704.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images705.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images706.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images707.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images708.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images709.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images710.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images711.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images712.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images713.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images714.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images715.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images716.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images717.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images718.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images719.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images720.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images721.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images722.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images723.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images724.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images725.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images726.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images727.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images728.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images729.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images730.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images731.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images732.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images733.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images734.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images735.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images736.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images737.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images738.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images739.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images740.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images741.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images742.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images743.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images744.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images745.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images746.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images747.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images748.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images749.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images750.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images751.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images752.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images753.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images754.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images755.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images756.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images757.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images758.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images759.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images760.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images761.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images762.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images763.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images764.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images765.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images766.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images767.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images768.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images769.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images770.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images771.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images772.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images773.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images774.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images775.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images776.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images777.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images778.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images779.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images780.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images781.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images782.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images783.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images784.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images785.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images786.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images787.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images788.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images789.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images790.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images791.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images792.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images793.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images794.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images795.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images796.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images797.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images798.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images799.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images800.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images801.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images802.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images803.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images804.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images805.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images806.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images807.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images808.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images809.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images810.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images811.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images812.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images813.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images814.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images815.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images816.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images817.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images818.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images819.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images820.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images821.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images822.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images823.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images824.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images825.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images826.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images827.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images828.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images829.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images830.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images831.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images832.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images833.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images834.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images835.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images836.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images837.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images838.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images839.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images840.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images841.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images842.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images843.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images844.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images845.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images846.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images847.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images848.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images849.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images850.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images851.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images852.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images853.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images854.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images855.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images856.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images857.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images858.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images859.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images860.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images861.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images862.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images863.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images864.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images865.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images866.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images867.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images868.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images869.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images870.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images871.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images872.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images873.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images874.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images875.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images876.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images877.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images878.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images879.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images880.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images881.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images882.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images883.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images884.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images885.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images886.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images887.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images888.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images889.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images890.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images891.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images892.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images893.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images894.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images895.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images896.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images897.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images898.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images899.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images900.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images901.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images902.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images903.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images904.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images905.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images906.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images907.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images908.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images909.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images910.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images911.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images912.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images913.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images914.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images915.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images916.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images917.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images918.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images919.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images920.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images921.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images922.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images923.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images924.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images925.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images926.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images927.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images928.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images929.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images930.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images931.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images932.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images933.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images934.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images935.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images936.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images937.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images938.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images939.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images940.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images941.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images942.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images943.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images944.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images945.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images946.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images947.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images948.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images949.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images950.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images951.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images952.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images953.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images954.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images955.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images956.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images957.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images958.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images959.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images960.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images961.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images962.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images963.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images964.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images965.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images966.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images967.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images968.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images969.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images970.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images971.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images972.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images973.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images974.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images975.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images976.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images977.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images978.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images979.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images980.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images981.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images982.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images983.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images984.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images985.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images986.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images987.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images988.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images989.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images990.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images991.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images992.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images993.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images994.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images995.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images996.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images997.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images998.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images999.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1000.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1001.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1002.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1003.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1004.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1005.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1006.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1007.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1008.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1009.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1010.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1011.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1012.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1013.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1014.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1015.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1016.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1017.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1018.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1019.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1020.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1021.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1022.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1023.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1024.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1025.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1026.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1027.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1028.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1029.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1030.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1031.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1032.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1033.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1034.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1035.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1036.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1037.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1038.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1039.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1040.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1041.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1042.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1043.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1044.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1045.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1046.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1047.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1048.jpg
/Users/samueljacquot/Desktop/P6_SAMUEL_JACQUOT/Images1049.jpg
In [22]:
# identification of key points and associated descriptors

sift_keypoints = []
temps1=time.time()
sift = cv2.xfeatures2d.SIFT_create(500)

for image_num in range(len(df_image.values)) :
    if image_num%100 == 0 : print(image_num)
    image = cv2.imread(df_image.loc[image_num,"image_propre"],0)
    kp, des = sift.detectAndCompute(image, None)
    sift_keypoints.append(des)
0
100
200
300
400
500
600
700
800
900
1000
In [23]:
sift_keypoints_by_img = np.asarray(sift_keypoints)
sift_keypoints_all    = np.concatenate(sift_keypoints_by_img, axis=0)

print()
print("Nombre de descripteurs : ", sift_keypoints_all.shape)

duration1=time.time()-temps1
print("temps de traitement SIFT descriptor : ", "%15.2f" % duration1, "secondes")
/opt/anaconda3/lib/python3.8/site-packages/numpy/core/_asarray.py:102: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
  return array(a, dtype, copy=False, order=order)
Nombre de descripteurs :  (517327, 128)
temps de traitement SIFT descriptor :           350.59 secondes
In [24]:
# Determination number of clusters
temps1=time.time()

k = int(round(np.sqrt(len(sift_keypoints_all)),0))
print("Nombre de clusters estimés : ", k)
print("Création de",k, "clusters de descripteurs ...")

# Clustering
kmeans = cluster.MiniBatchKMeans(n_clusters=k, init_size=3*k, random_state=0)
kmeans.fit(sift_keypoints_all)

duration1=time.time()-temps1
print("temps de traitement kmeans : ", "%15.2f" % duration1, "secondes")
Nombre de clusters estimés :  719
Création de 719 clusters de descripteurs ...
temps de traitement kmeans :            45.00 secondes
In [25]:
# Creation of histograms (features)
temps1=time.time()

def build_histogram(kmeans, des, image_num):
    res = kmeans.predict(des)
    hist = np.zeros(len(kmeans.cluster_centers_))
    nb_des=len(des)
    if nb_des==0 : print("problème histogramme image  : ", image_num)
    for i in res:
        hist[i] += 1.0/nb_des
    return hist


# Creation of a matrix of histograms
hist_vectors=[]

for i, image_desc in enumerate(sift_keypoints_by_img) :
    if i%100 == 0 : print(i)  
    hist = build_histogram(kmeans, image_desc, i) #calculates the histogram
    hist_vectors.append(hist) #histogram is the feature vector

im_features = np.asarray(hist_vectors)

duration1=time.time()-temps1
print("temps de création histogrammes : ", "%15.2f" % duration1, "secondes")
0
100
200
300
400
500
600
700
800
900
1000
temps de création histogrammes :             2.09 secondes
In [26]:
from sklearn import manifold, decomposition

print("Dimensions dataset avant réduction PCA : ", im_features.shape)
pca = decomposition.PCA(n_components=0.99)
feat_pca= pca.fit_transform(im_features)
print("Dimensions dataset après réduction PCA : ", feat_pca.shape)
Dimensions dataset avant réduction PCA :  (1050, 719)
Dimensions dataset après réduction PCA :  (1050, 499)
In [27]:
from sklearn import manifold, decomposition

tsne = manifold.TSNE(n_components=2, perplexity=30, 
                     n_iter=2000, init='random', random_state=6)
X_tsne = tsne.fit_transform(feat_pca)

df_tsne = pd.DataFrame(X_tsne[:,0:2], columns=['tsne1', 'tsne2'])
df_tsne["class"] = df_image["categorie_article"]
print(df_tsne.shape)
(1050, 3)
In [28]:
plt.figure(figsize=(8,5))
sns.scatterplot(
    x="tsne1", y="tsne2", hue="class", data=df_tsne, legend="brief",
    palette=sns.color_palette('tab10', n_colors=7), s=50, alpha=0.6)

plt.title('TSNE selon les vraies classes', fontsize = 30, pad = 35, fontweight = 'bold')
plt.xlabel('tsne1', fontsize = 26, fontweight = 'bold')
plt.ylabel('tsne2', fontsize = 26, fontweight = 'bold')
plt.legend(prop={'size': 14}) 

plt.show()
In [29]:
cls = cluster.KMeans(n_clusters=7, random_state=6)
cls.fit(X_tsne)

df_tsne["cluster"] = cls.labels_
print(df_tsne.shape)
(1050, 4)
In [30]:
plt.figure(figsize=(10,6))
sns.scatterplot(
    x="tsne1", y="tsne2",
    hue="cluster",
    palette=sns.color_palette('tab10', n_colors=7), s=50, alpha=0.6,
    data=df_tsne,
    legend="brief")

plt.title('TSNE selon les clusters', fontsize = 30, pad = 35, fontweight = 'bold')
plt.xlabel('tsne1', fontsize = 26, fontweight = 'bold')
plt.ylabel('tsne2', fontsize = 26, fontweight = 'bold')
plt.legend(prop={'size': 14}) 

plt.show()

labels = df_image["categorie_article"]
print("ARI : ", metrics.adjusted_rand_score(labels, cls.labels_))
ARI :  0.04964222194799677

Approche CNN

Partie Texte

Dans cette partie, nous étudierons la faisabilité d'un moteur de classiffication en utilisant uniquement les descriptions des articles de notre échantillon.

Pré-processing

In [31]:
test=df["description"][1]
test
Out[31]:
'Specifications of Sathiyas Cotton Bath Towel (3 Bath Towel, Red, Yellow, Blue) Bath Towel Features Machine Washable Yes Material Cotton Design Self Design General Brand Sathiyas Type Bath Towel GSM 500 Model Name Sathiyas cotton bath towel Ideal For Men, Women, Boys, Girls Model ID asvtwl322 Color Red, Yellow, Blue Size Mediam Dimensions Length 30 inch Width 60 inch In the Box Number of Contents in Sales Package 3 Sales Package 3 Bath Towel'
In [34]:
def tokenizer_fct(sentence) :
    # print(sentence)
    sentence_clean = sentence.replace('-', ' ').replace('+', ' ').replace('/', ' ').replace('#', ' ')
    word_tokens = word_tokenize(sentence_clean)
    return word_tokens

stop_w = list(set(stopwords.words('english'))) + ['[', ']', ',', '.', ':', '?', '(', ')']

def stop_word_filter_fct(list_words) :
    filtered_w = [w for w in list_words if not w in stop_w]
    filtered_w2 = [w for w in filtered_w if len(w) > 2]
    return filtered_w2

# En minuscule
def lower_start_fct(list_words) :
    lw = [w.lower() for w in list_words]
    return lw

def lemma_fct(list_words) :
    lemmatizer = WordNetLemmatizer()
    lem_w = [lemmatizer.lemmatize(w) for w in list_words]
    return lem_w

def sans_chiffre(toto):
    number=["0","1","2","3","4","5","6","7","8","9"]
    for i in range(10):
        toto=[ x for x in toto if number[i] not in x ]
    return(toto)




test2=sans_chiffre(lemma_fct(lower_start_fct(stop_word_filter_fct(tokenizer_fct(test)))))
test2
Out[34]:
['specification',
 'sathiyas',
 'cotton',
 'bath',
 'towel',
 'bath',
 'towel',
 'red',
 'yellow',
 'blue',
 'bath',
 'towel',
 'feature',
 'machine',
 'washable',
 'yes',
 'material',
 'cotton',
 'design',
 'self',
 'design',
 'general',
 'brand',
 'sathiyas',
 'type',
 'bath',
 'towel',
 'gsm',
 'model',
 'name',
 'sathiyas',
 'cotton',
 'bath',
 'towel',
 'ideal',
 'for',
 'men',
 'woman',
 'boy',
 'girl',
 'model',
 'color',
 'red',
 'yellow',
 'blue',
 'size',
 'mediam',
 'dimension',
 'length',
 'inch',
 'width',
 'inch',
 'box',
 'number',
 'content',
 'sale',
 'package',
 'sale',
 'package',
 'bath',
 'towel']
In [35]:
def transform_bow_fct(desc_text) :
    word_tokens = tokenizer_fct(desc_text)
    sw = stop_word_filter_fct(word_tokens)
    lw = lower_start_fct(sw)
    # lem_w = lemma_fct(lw)    
    transf_desc_text = ' '.join(lw)
    return transf_desc_text

# Fonction de préparation du texte pour le bag of words avec lemmatization
def transform_bow_lem_fct(desc_text) :
    word_tokens = tokenizer_fct(desc_text)
    sw = stop_word_filter_fct(word_tokens)
    lw = lower_start_fct(sw)
    lem_w = lemma_fct(lw)
    sc=sans_chiffre(lem_w)
    transf_desc_text = ' '.join(sc)
    return transf_desc_text

# Fonction de préparation du texte pour le Deep learning (USE et BERT)
def transform_dl_fct(desc_text) :
    word_tokens = tokenizer_fct(desc_text)
#    sw = stop_word_filter_fct(word_tokens)
    lw = lower_start_fct(word_tokens)
    # lem_w = lemma_fct(lw)    
    transf_desc_text = ' '.join(lw)
    return transf_desc_text

df['sentence_bow'] = df["description"].apply(lambda x : transform_bow_fct(x))
df['sentence_bow_lem'] =df["description"].apply(lambda x : transform_bow_lem_fct(x))
df['sentence_dl'] = df["description"].apply(lambda x : transform_dl_fct(x))
In [36]:
l_cat = list(set(df["categorie_article"]))
print("catégories : ", l_cat)
y_cat_num = [(1-l_cat.index(df.iloc[i]["categorie_article"])) for i in range(len(df))]
catégories :  ['Home Furnishing', 'Beauty and Personal Care', 'Computers', 'Home Decor & Festive Needs', 'Baby Care', 'Watches', 'Kitchen & Dining']
In [37]:
df['length_bow'] = df['sentence_bow'].apply(lambda x : len(word_tokenize(x)))
print("max length bow : ", df['length_bow'].max())
df['length_dl'] = df['sentence_dl'].apply(lambda x : len(word_tokenize(x)))
print("max length dl : ", df['length_dl'].max())
max length bow :  379
max length dl :  632
In [38]:
df
Out[38]:
uniq_id crawl_timestamp product_url product_name product_category_tree pid retail_price discounted_price image is_FK_Advantage_product description product_rating overall_rating brand product_specifications categorie_article sentence_bow sentence_bow_lem sentence_dl length_bow length_dl
0 55b85ea15a1536d46b7190ad6fff8ce7 2016-04-30 03:22:56 +0000 http://www.flipkart.com/elegance-polyester-mul... Elegance Polyester Multicolor Abstract Eyelet ... ["Home Furnishing >> Curtains & Accessories >>... CRNEG7BKMFFYHQ8Z 1899.0 899.0 55b85ea15a1536d46b7190ad6fff8ce7.jpg False Key Features of Elegance Polyester Multicolor ... No rating available No rating available Elegance {"product_specification"=>[{"key"=>"Brand", "v... Home Furnishing key features elegance polyester multicolor abs... key feature elegance polyester multicolor abst... key features of elegance polyester multicolor ... 156 248
1 7b72c92c2f6c40268628ec5f14c6d590 2016-04-30 03:22:56 +0000 http://www.flipkart.com/sathiyas-cotton-bath-t... Sathiyas Cotton Bath Towel ["Baby Care >> Baby Bath & Skin >> Baby Bath T... BTWEGFZHGBXPHZUH 600.0 449.0 7b72c92c2f6c40268628ec5f14c6d590.jpg False Specifications of Sathiyas Cotton Bath Towel (... No rating available No rating available Sathiyas {"product_specification"=>[{"key"=>"Machine Wa... Baby Care specifications sathiyas cotton bath towel bath... specification sathiyas cotton bath towel bath ... specifications of sathiyas cotton bath towel (... 63 84
2 64d5d4a258243731dc7bbb1eef49ad74 2016-04-30 03:22:56 +0000 http://www.flipkart.com/eurospa-cotton-terry-f... Eurospa Cotton Terry Face Towel Set ["Baby Care >> Baby Bath & Skin >> Baby Bath T... BTWEG6SHXTDB2A2Y NaN NaN 64d5d4a258243731dc7bbb1eef49ad74.jpg False Key Features of Eurospa Cotton Terry Face Towe... No rating available No rating available Eurospa {"product_specification"=>[{"key"=>"Material",... Baby Care key features eurospa cotton terry face towel s... key feature eurospa cotton terry face towel se... key features of eurospa cotton terry face towe... 158 252
3 d4684dcdc759dd9cdf41504698d737d8 2016-06-20 08:49:52 +0000 http://www.flipkart.com/santosh-royal-fashion-... SANTOSH ROYAL FASHION Cotton Printed King size... ["Home Furnishing >> Bed Linen >> Bedsheets >>... BDSEJT9UQWHDUBH4 2699.0 1299.0 d4684dcdc759dd9cdf41504698d737d8.jpg False Key Features of SANTOSH ROYAL FASHION Cotton P... No rating available No rating available SANTOSH ROYAL FASHION {"product_specification"=>[{"key"=>"Brand", "v... Home Furnishing key features santosh royal fashion cotton prin... key feature santosh royal fashion cotton print... key features of santosh royal fashion cotton p... 114 148
4 6325b6870c54cd47be6ebfbffa620ec7 2016-06-20 08:49:52 +0000 http://www.flipkart.com/jaipur-print-cotton-fl... Jaipur Print Cotton Floral King sized Double B... ["Home Furnishing >> Bed Linen >> Bedsheets >>... BDSEJTHNGWVGWWQU 2599.0 698.0 6325b6870c54cd47be6ebfbffa620ec7.jpg False Key Features of Jaipur Print Cotton Floral Kin... No rating available No rating available Jaipur Print {"product_specification"=>[{"key"=>"Machine Wa... Home Furnishing key features jaipur print cotton floral king s... key feature jaipur print cotton floral king si... key features of jaipur print cotton floral kin... 156 228
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
1045 958f54f4c46b53c8a0a9b8167d9140bc 2015-12-01 10:15:43 +0000 http://www.flipkart.com/oren-empower-extra-lar... Oren Empower Extra Large Self Adhesive Sticker ["Baby Care >> Baby & Kids Gifts >> Stickers >... STIE88ZGTX65GH4V 1399.0 999.0 958f54f4c46b53c8a0a9b8167d9140bc.jpg False Oren Empower Extra Large Self Adhesive Sticker... No rating available No rating available Oren Empower {"product_specification"=>[{"key"=>"Number of ... Baby Care oren empower extra large self adhesive sticker... oren empower extra large self adhesive sticker... oren empower extra large self adhesive sticker... 234 483
1046 fd6cbcc22efb6b761bd564c28928483c 2015-12-01 10:15:43 +0000 http://www.flipkart.com/wallmantra-large-vinyl... Wallmantra Large Vinyl Sticker Sticker ["Baby Care >> Baby & Kids Gifts >> Stickers >... STIEC889ZD5GDCVQ 4930.0 1896.0 fd6cbcc22efb6b761bd564c28928483c.jpg False Wallmantra Large Vinyl Sticker Sticker (Pack o... No rating available No rating available Wallmantra {"product_specification"=>[{"key"=>"Number of ... Baby Care wallmantra large vinyl sticker sticker pack pr... wallmantra large vinyl sticker sticker pack pr... wallmantra large vinyl sticker sticker ( pack ... 164 323
1047 5912e037d12774bb73a2048f35a00009 2015-12-01 10:15:43 +0000 http://www.flipkart.com/uberlyfe-extra-large-p... Uberlyfe Extra Large Pigmented Polyvinyl Films... ["Baby Care >> Baby & Kids Gifts >> Stickers >... STIE5UVGW2JWVWCT 4500.0 1449.0 5912e037d12774bb73a2048f35a00009.jpg False Buy Uberlyfe Extra Large Pigmented Polyvinyl F... No rating available No rating available Uberlyfe {"product_specification"=>[{"key"=>"Number of ... Baby Care buy uberlyfe extra large pigmented polyvinyl f... buy uberlyfe extra large pigmented polyvinyl f... buy uberlyfe extra large pigmented polyvinyl f... 31 45
1048 c3edc504d1b4f0ba6224fa53a43a7ad6 2015-12-01 10:15:43 +0000 http://www.flipkart.com/wallmantra-medium-viny... Wallmantra Medium Vinyl Sticker Sticker ["Baby Care >> Baby & Kids Gifts >> Stickers >... STIEC889ZGFD3RCE 3465.0 1333.0 c3edc504d1b4f0ba6224fa53a43a7ad6.jpg False Buy Wallmantra Medium Vinyl Sticker Sticker fo... No rating available No rating available Wallmantra {"product_specification"=>[{"key"=>"Number of ... Baby Care buy wallmantra medium vinyl sticker sticker rs... buy wallmantra medium vinyl sticker sticker on... buy wallmantra medium vinyl sticker sticker fo... 25 35
1049 f2f027ad6a6df617c9f125173da71e44 2015-12-01 10:15:43 +0000 http://www.flipkart.com/uberlyfe-large-vinyl-s... Uberlyfe Large Vinyl Sticker ["Baby Care >> Baby & Kids Gifts >> Stickers >... STIE2ZEPACRQJKH7 1190.0 595.0 f2f027ad6a6df617c9f125173da71e44.jpg False Buy Uberlyfe Large Vinyl Sticker for Rs.595 on... 4 4 Uberlyfe {"product_specification"=>[{"key"=>"Sales Pack... Baby Care buy uberlyfe large vinyl sticker rs.595 online... buy uberlyfe large vinyl sticker online uberly... buy uberlyfe large vinyl sticker for rs.595 on... 23 33

1050 rows × 21 columns

In [39]:
import time
from sklearn.manifold import TSNE
from sklearn.cluster import KMeans
from sklearn.metrics import adjusted_rand_score

# Calcul Tsne, détermination des clusters et calcul ARI entre vrais catégorie et n° de clusters
def ARI_fct(features) :
    time1 = time.time()
    num_labels=len(l_cat)
    tsne = TSNE(n_components=2, perplexity=30, n_iter=2000, 
                                 init='random', learning_rate=200, random_state=42)
    X_tsne = tsne.fit_transform(features)
    
    # Détermination des clusters à partir des données après Tsne 
    cls = KMeans(n_clusters=num_labels, n_init=100, random_state=42)
    cls.fit(X_tsne)
    ARI = np.round(adjusted_rand_score(y_cat_num, cls.labels_),4)
    time2 = np.round(time.time() - time1,0)
    print("ARI : ", ARI, "time : ", time2)
    
    return ARI, X_tsne, cls.labels_


# visualisation du Tsne selon les vraies catégories et selon les clusters
def TSNE_visu_fct(X_tsne, y_cat_num, labels, ARI) :
    fig = plt.figure(figsize=(15,6))
    
    ax = fig.add_subplot(121)
    scatter = ax.scatter(X_tsne[:,0],X_tsne[:,1], c=y_cat_num, cmap='Set1')
    ax.legend(handles=scatter.legend_elements()[0], labels=l_cat, loc="best", title="Categorie")
    plt.title('Représentation des articles par catégories réelles')
    
    ax = fig.add_subplot(122)
    scatter = ax.scatter(X_tsne[:,0],X_tsne[:,1], c=labels, cmap='Set1')
    ax.legend(handles=scatter.legend_elements()[0], labels=set(labels), loc="best", title="Clusters")
    plt.title('Représentation des articles par clusters')
    
    plt.show()
    print("ARI : ", ARI)
    
cvect = CountVectorizer(stop_words='english', max_df=0.95, min_df=1)
ctf = TfidfVectorizer(stop_words='english', max_df=0.95, min_df=1)

feat = 'sentence_bow_lem'
cv_fit = cvect.fit(df[feat])
ctf_fit = ctf.fit(df[feat])

cv_transform = cvect.transform(df[feat])  
ctf_transform = ctf.transform(df[feat])  

Approche bag of word comptage mot

In [40]:
pd.value_counts(test2)
Out[40]:
bath             6
towel            6
cotton           3
sathiyas         3
package          2
sale             2
design           2
blue             2
model            2
inch             2
yellow           2
red              2
specification    1
width            1
girl             1
boy              1
length           1
brand            1
gsm              1
washable         1
material         1
woman            1
machine          1
yes              1
dimension        1
mediam           1
type             1
box              1
content          1
men              1
number           1
for              1
feature          1
color            1
general          1
self             1
ideal            1
size             1
name             1
dtype: int64
In [41]:
print("CountVectorizer : ")
print("-----------------")
ARI, X_tsne, labels = ARI_fct(cv_transform)
print()
CountVectorizer : 
-----------------
ARI :  0.4172 time :  7.0

In [42]:
 TSNE_visu_fct(X_tsne, y_cat_num, labels, ARI)
ARI :  0.4172

Approche bag of word Tf-idf

In [43]:
print("Tf-idf : ")
print("--------")
ARI, X_tsne, labels = ARI_fct(ctf_transform)
Tf-idf : 
--------
ARI :  0.4757 time :  6.0
In [44]:
 TSNE_visu_fct(X_tsne, y_cat_num, labels, ARI)
ARI :  0.4757
In [45]:
import tensorflow as tf
import tensorflow.keras
from tensorflow.keras import backend as K

from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras import metrics as kmetrics
from tensorflow.keras.layers import *
from tensorflow.keras.models import Model
import gensim
In [ ]:
 
In [ ]:
 

Approche Word2Vec

In [46]:
w2v_size=300
w2v_window=5
w2v_min_count=1
w2v_epochs=100
maxlen = 24 # adapt to length of sentences
sentences = df['sentence_bow_lem'].to_list()
sentences = [gensim.utils.simple_preprocess(text) for text in sentences]
In [47]:
# Création et entraînement du modèle Word2Vec

print("Build & train Word2Vec model ...")
w2v_model = gensim.models.Word2Vec(min_count=w2v_min_count, window=w2v_window,
                                                vector_size=w2v_size,
                                                seed=42,
                                                workers=1)
#                                                workers=multiprocessing.cpu_count())
w2v_model.build_vocab(sentences)
w2v_model.train(sentences, total_examples=w2v_model.corpus_count, epochs=w2v_epochs)
model_vectors = w2v_model.wv
w2v_words = model_vectors.index_to_key
print("Vocabulary size: %i" % len(w2v_words))
print("Word2Vec trained")
Build & train Word2Vec model ...
Vocabulary size: 4482
Word2Vec trained
In [48]:
# Préparation des sentences (tokenization)

print("Fit Tokenizer ...")
tokenizer = Tokenizer()
tokenizer.fit_on_texts(sentences)
x_sentences = pad_sequences(tokenizer.texts_to_sequences(sentences),
                                                     maxlen=maxlen,
                                                     padding='post') 
                                                   
num_words = len(tokenizer.word_index) + 1
print("Number of unique words: %i" % num_words)
Fit Tokenizer ...
Number of unique words: 4483
In [49]:
# Création de la matrice d'embedding

print("Create Embedding matrix ...")
w2v_size = 300
word_index = tokenizer.word_index
vocab_size = len(word_index) + 1
embedding_matrix = np.zeros((vocab_size, w2v_size))
i=0
j=0
    
for word, idx in word_index.items():
    i +=1
    if word in w2v_words:
        j +=1
        embedding_vector = model_vectors[word]
        if embedding_vector is not None:
            embedding_matrix[idx] = model_vectors[word]
            
word_rate = np.round(j/i,4)
print("Word embedding rate : ", word_rate)
print("Embedding matrix: %s" % str(embedding_matrix.shape))
Create Embedding matrix ...
Word embedding rate :  1.0
Embedding matrix: (4483, 300)
In [50]:
# Création du modèle

input=Input(shape=(len(x_sentences),maxlen),dtype='float64')
word_input=Input(shape=(maxlen,),dtype='float64')  
word_embedding=Embedding(input_dim=vocab_size,
                         output_dim=w2v_size,
                         weights = [embedding_matrix],
                         input_length=maxlen)(word_input)
word_vec=GlobalAveragePooling1D()(word_embedding)  
embed_model = Model([word_input],word_vec)

embed_model.summary()
Model: "model"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 input_2 (InputLayer)        [(None, 24)]              0         
                                                                 
 embedding (Embedding)       (None, 24, 300)           1344900   
                                                                 
 global_average_pooling1d (G  (None, 300)              0         
 lobalAveragePooling1D)                                          
                                                                 
=================================================================
Total params: 1,344,900
Trainable params: 1,344,900
Non-trainable params: 0
_________________________________________________________________
In [51]:
embeddings = embed_model.predict(x_sentences)
embeddings.shape
Out[51]:
(1050, 300)
In [52]:
ARI, X_tsne, labels = ARI_fct(embeddings)
ARI :  0.2721 time :  6.0
In [53]:
TSNE_visu_fct(X_tsne, y_cat_num, labels, ARI)
ARI :  0.2721

Approche BERT

In [54]:
os.environ["TF_KERAS"]='1'
In [55]:
# Fonction de préparation des sentences
def bert_inp_fct(sentences, bert_tokenizer, max_length) :
    input_ids=[]
    token_type_ids = []
    attention_mask=[]
    bert_inp_tot = []

    for sent in sentences:
        bert_inp = bert_tokenizer.encode_plus(sent,
                                              add_special_tokens = True,
                                              max_length = max_length,
                                              padding='max_length',
                                              return_attention_mask = True, 
                                              return_token_type_ids=True,
                                              truncation=True,
                                              return_tensors="tf")
    
        input_ids.append(bert_inp['input_ids'][0])
        token_type_ids.append(bert_inp['token_type_ids'][0])
        attention_mask.append(bert_inp['attention_mask'][0])
        bert_inp_tot.append((bert_inp['input_ids'][0], 
                             bert_inp['token_type_ids'][0], 
                             bert_inp['attention_mask'][0]))

    input_ids = np.asarray(input_ids)
    token_type_ids = np.asarray(token_type_ids)
    attention_mask = np.array(attention_mask)
    
    return input_ids, token_type_ids, attention_mask, bert_inp_tot
    

# Fonction de création des features
def feature_BERT_fct(model, model_type, sentences, max_length, b_size, mode='HF') :
    batch_size = b_size
    batch_size_pred = b_size
    bert_tokenizer = AutoTokenizer.from_pretrained(model_type)
    time1 = time.time()

    for step in range(len(sentences)//batch_size) :
        idx = step*batch_size
        input_ids, token_type_ids, attention_mask, bert_inp_tot = bert_inp_fct(sentences[idx:idx+batch_size], 
                                                                      bert_tokenizer, max_length)
        
        if mode=='HF' :    # Bert HuggingFace
            outputs = model.predict([input_ids, attention_mask, token_type_ids], batch_size=batch_size_pred)
            last_hidden_states = outputs.last_hidden_state

        if mode=='TFhub' : # Bert Tensorflow Hub
            text_preprocessed = {"input_word_ids" : input_ids, 
                                 "input_mask" : attention_mask, 
                                 "input_type_ids" : token_type_ids}
            outputs = model(text_preprocessed)
            last_hidden_states = outputs['sequence_output']
             
        if step ==0 :
            last_hidden_states_tot = last_hidden_states
            last_hidden_states_tot_0 = last_hidden_states
        else :
            last_hidden_states_tot = np.concatenate((last_hidden_states_tot,last_hidden_states))
    
    features_bert = np.array(last_hidden_states_tot).mean(axis=1)
    
    time2 = np.round(time.time() - time1,0)
    print("temps traitement : ", time2)
     
    return features_bert, last_hidden_states_tot
In [56]:
from transformers import TFAutoModel
from transformers import AutoTokenizer

max_length = 64
batch_size = 10
model_type = 'bert-base-uncased'
model = TFAutoModel.from_pretrained(model_type)
sentences = df['sentence_dl'].to_list()
Some layers from the model checkpoint at bert-base-uncased were not used when initializing TFBertModel: ['nsp___cls', 'mlm___cls']
- This IS expected if you are initializing TFBertModel from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).
- This IS NOT expected if you are initializing TFBertModel from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).
All the layers of TFBertModel were initialized from the model checkpoint at bert-base-uncased.
If your task is similar to the task the model of the checkpoint was trained on, you can already use TFBertModel for predictions without further training.
In [57]:
# Création des features

features_bert, last_hidden_states_tot = feature_BERT_fct(model, model_type, sentences, 
                                                         max_length, batch_size, mode='HF')
temps traitement :  62.0
In [58]:
ARI, X_tsne, labels = ARI_fct(features_bert)
ARI :  0.331 time :  7.0
In [59]:
TSNE_visu_fct(X_tsne, y_cat_num, labels, ARI)
ARI :  0.331

Approche USE

In [60]:
import tensorflow as tf
# import tensorflow_hub as hub
import tensorflow.keras
from tensorflow.keras import backend as K

from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras import metrics as kmetrics
from tensorflow.keras.layers import *
from tensorflow.keras.models import Model

# Bert
import transformers
#from transformers import *

os.environ["TF_KERAS"]='1'
In [61]:
#pip install CpmTokenizer
In [62]:
print(tf.__version__)
print(tensorflow.__version__)
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
print(tf.test.is_built_with_cuda())
2.8.0
2.8.0
Num GPUs Available:  0
False
In [63]:
import tensorflow_hub as hub
In [64]:
#embed = hub.load("https://tfhub.dev/google/universal-sentence-encoder/4")
In [65]:
def feature_USE_fct(sentences, b_size) :
    batch_size = b_size
    time1 = time.time()

    for step in range(len(sentences)//batch_size) :
        idx = step*batch_size
        feat = embed(sentences[idx:idx+batch_size])

        if step ==0 :
            features = feat
        else :
            features = np.concatenate((features,feat))

    time2 = np.round(time.time() - time1,0)
    return features
In [66]:
batch_size = 10
sentences = df['sentence_dl'].to_list()
In [67]:
#features_USE = feature_USE_fct(sentences, batch_size)
In [68]:
#ARI, X_tsne, labels = ARI_fct(features_USE)
In [69]:
TSNE_visu_fct(X_tsne, y_cat_num, labels, ARI)
ARI :  0.331

Conclusion

Remarque 1 : Les catégories que nous avons utilisés sont très général pour la catégorie 'computer', cela peut autant être un clavier qu'une clé usb. Il faudrait pour l'étape de production augmenter le nombre de catégorie et donc aussi le nombre d'images.

In [ ]: